package com.vertx.starter;

import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.eventbus.DeliveryOptions;
import io.vertx.core.eventbus.Message;
import io.vertx.core.eventbus.MessageConsumer;

public interface AppMessageSenderAgent {

    static AppMessageSenderAgent create(Vertx vertx) {
        return new AppMessageSenderAgentImpl(vertx);
    }

    void sendMessage(String var1, Object var2);

    void sendMessage(String var1, Object var2, DeliveryOptions var3);

    void publishMessage(String var1, Object var2);

    void publishMessage(String var1, Object var2, DeliveryOptions var3);

    <T> Future<Message<T>> requestMessage(String var1, Object var2);

    <T> Future<Message<T>> requestMessage(String var1, Object var2, DeliveryOptions var3);

    <T> MessageConsumer<T> messageConsumer(String var1, Handler<Message<T>> var2);

    <T> MessageConsumer<T> messageLocalConsumer(String var1, Handler<Message<T>> var2);

}
